1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| package sparkml import org.apache.log4j.{Level, Logger} import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions._
case class Person(name: String, age: Int, height: Int) case class People(age: Int, names: String) case class Score(name: String, grade: Int) object WordCount2 { def main(args: Array[String]): Unit = { Logger.getLogger("org").setLevel(Level.WARN) val spark = SparkSession.builder() .master("local[*]") .appName("dataset") .getOrCreate() import spark.implicits._ val seq1 = Seq(Person("leo", 29, 170), Person("jack", 21, 170), Person("xzw", 21, 183)) val ds1 = spark.createDataset(seq1) ds1.map{x => (x.age + 1, x.name)}.show() ds1.flatMap{x => val a = x.age val s = x.name.split("").map{x => (a, x)} s }.show() ds1.filter("age >= 25 and height >= 170").show() ds1.filter($"age" >= 25 && $"height" >= 170).show() ds1.filter{x => x.age >= 25 && x.height >= 170}.show() ds1.where("age >= 25 and height >= 170").show() ds1.where($"age" >= 25 && $"height" >= 170).show() ds1.distinct().show() ds1.dropDuplicates("age").show() ds1.dropDuplicates("age", "height").show() ds1.dropDuplicates(Seq("age", "height")).show() ds1.dropDuplicates(Array("age", "height")).show() val seq2 = Seq(Person("leo", 18, 183), Person("jack", 18, 175), Person("xzw", 22, 183), Person("lzq", 23, 175)) val ds2 = spark.createDataset(seq2) val seq3 = Seq(Person("leo", 19, 183), Person("jack", 18, 175), Person("xzw", 22, 170), Person("lzq", 23, 175)) val ds3 = spark.createDataset(seq3) ds3.union(ds2).show() ds3.except(ds2).show() ds3.intersect(ds2).show() ds2.select("name", "age").show() ds2.select(expr("height + 1").as[Int].as("height")).show() ds2.sort("age").show() ds2.sort($"age".desc, $"height".desc).show() ds2.orderBy("age").show() ds2.orderBy($"age".desc, $"height".desc).show() val ds4 = ds3.union(ds2) val rands = ds4.randomSplit(Array(0.3, 0.7)) println(rands(0).count()) println(rands(1).count()) rands(0).show() rands(1).show() val ds5 = ds4.sample(true, 0.5) println(ds5.count()) ds5.show() val ds6 = ds4.drop("height") println(ds6.columns) ds6.show() val ds7 = ds4.withColumn("add", $"age" + 2) println(ds7.columns) ds7.show() val ds8 = ds7.withColumnRenamed("add", "age_new") println(ds8.columns) ds8.show() ds4.withColumn("add_col", lit(1)).show() val seq4 = Seq(Score("leo", 85), Score("jack", 63), Score("wjl", 70), Score("zyn", 90)) val ds9 = spark.createDataset(seq4) val ds10 = ds2.join(ds9, Seq("name"), "inner") ds10.show() val ds11 = ds2.join(ds9, Seq("name"), "left") ds11.show() val ds12 = ds4.groupBy("height").agg(avg("age").as("avg_age")) ds12.show() } }
|